package com.atguigu.jsonparse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Smexy on 2022/5/24
 *
 *      Fastjson使用静态方法。
 *      父类: JSON
 *              str 转 java对象 :   JSON.parseObject()
 *                                  JSON.parseArray()
 *
 *               java 转 str:       JSON.toJSONString(对象)
 *
 *      {}：   fastjson对应  JSONObject。 本质是Map
 *      []:    fastjson对应  JSONArray。  本质是List
 *
 *      ---------------------------------
 *      Gson都是实例方法。
 *              new Gson()
 *
 *
 */
public class JsonParseDemo {

    public static void main(String[] args) {

        Employee jack1 = new Employee("jack1", 20);
        Employee jack2 = new Employee("jack2", 20);

        ArrayList<Employee> employees = new ArrayList<>();

        employees.add(jack1);
        employees.add(jack2);

        String str1 = JSON.toJSONString(jack1);
        String str2 = JSON.toJSONString(employees);

        System.out.println(str1);
        System.out.println(str2);

        System.out.println("-------------------------str 转 java对象------------------");

        // 转为Map
        JSONObject jsonObject = JSON.parseObject(str1);

        System.out.println(jsonObject.getString("name"));

        //转为Bean
        Employee employee = JSON.parseObject(str1, Employee.class);

        System.out.println(employee);

        JSONArray jsonArray = JSON.parseArray(str2);

        System.out.println(jsonArray.get(0));

        List<Employee> employees1 = JSON.parseArray(str2, Employee.class);

        System.out.println(employees1);


        System.out.println("-------------------------java对象 转 str------------------");

        Gson gson = new Gson();

        System.out.println(gson.toJson(employee));
        System.out.println(gson.toJson(employees1));

    }
}
